Package Question3_1

Source Code of Question3_1.Question

package Question3_1;

import java.util.EmptyStackException;

public class Question {
  static int stackSize = 10;
  static int [] buffer = new int [stackSize * 3];
 
  // 3 stack pointers to keep track of the index of the top element
  static int [] stackPointer = {-1, -1, -1};
  public static void main(String [] args) throws Exception  {
    push(2, 4);
    System.out.println("Peek 2: " + peek(2));
    push(0, 3);
    push(0, 7);
    push(0, 5);
    System.out.println("Peek 0: " + peek(0));
    pop(0);
    System.out.println("Peek 0: " + peek(0));
    pop(0);
    System.out.println("Peek 0: " + peek(0));
  }

  static void push(int stackNum, int value) throws Exception {
    /* Check that we have space for the next element */
    if (stackPointer[stackNum] + 1 >= stackSize) {
      throw new FullStackException();
    }
    /* Increment stack pointer and then update top value*/   
    stackPointer[stackNum]++;
    buffer[absTopOfStack(stackNum)] = value; 
  }

  static int pop(int stackNum) throws Exception {
    if (isEmpty(stackNum)) {
      throw new EmptyStackException();
    }
    int value = buffer[absTopOfStack(stackNum)]; // Get top
    buffer[absTopOfStack(stackNum)] = 0; // Clear index
    stackPointer[stackNum]--; // Decrement pointer
    return value;
  }

  static int peek(int stackNum) {
    if (isEmpty(stackNum)) {
      throw new EmptyStackException();
    }   
    return buffer[absTopOfStack(stackNum)];
  }

  static boolean isEmpty(int stackNum) {
    return stackPointer[stackNum] == -1;
  }
 
  /* returns index of the top of the stack "stackNum", in absolute terms */
  static int absTopOfStack(int stackNum) {
    return stackNum * stackSize + stackPointer[stackNum];
 
}
TOP

Related Classes of Question3_1.Question

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.